/*
 * (C) Copyright 2007, AIC. All Rights Reserved
 * 
 * 履歴
 * 2007/04/28:王彦�??:新規作成
 */
package org.ss.psci.util;

import java.io.File;
import java.io.FileOutputStream;

/**
 * 文件服务�??
 * 
 * 提供各种文件处理服务
 * 
 * @see com.aic.elearning.util.FileUtil
 * @see com.aic.elearning.serivce.base.Service
 * @version V01-00
 * @since V01-00
 */
public class FileService {
	/**
	 * 处理文件属�??
	 */
	private File file;

	/**
	 * 删除文件及目�??
	 * 
	 * 删除文件及其目录，子目录�??
	 * 
	 * @param なし
	 * @return なし
	 * @exception なし
	 * @since 01-00
	 */
	public void deleteTree() throws Exception {
		try {
			FileUtil deltree = new FileUtil();
			deltree.setDir(file);
			deltree.executeDelete();
		} catch (Exception e) {
			throw (e);
		}
	}

	/**
	 * 获得文件列表
	 * 
	 * 根据文件对象取得该目录下的文件和目录列表
	 * 
	 * @param file
	 *            文件对象
	 * @return String[] 文件和目录列�??
	 * @exception なし
	 * @since 01-00
	 */
	public String[] getFileList(File file) {
		return file.list();
	}

	/**
	 * 获得文件对象列表
	 * 
	 * 根据文件对象取得该目录下的文件和目录对象列表
	 * 
	 * @param file
	 *            文件对象
	 * @return File[] 文件和目录对象列�??
	 * @exception なし
	 * @since 01-00
	 */
	public File[] getFileObjectList(File file) {
		return file.listFiles();
	}

	/**
	 * 重命名文�??
	 * 
	 * 将目标文件重命名
	 * 
	 * @param file
	 *            文件对象
	 * @return なし
	 * @exception なし
	 * @since 01-00
	 */
	public void renameToFile(File file) {
		file.renameTo(file);
	}

	/**
	 * 判断文件是否存在
	 * 
	 * 判断文件是否再该目录下存�??
	 * 
	 * @param なし
	 * @return boolean true or false
	 * @exception なし
	 * @since 01-00
	 */
	public boolean exists() {
		return file.exists();
	}

	/**
	 * 取得文件绝对路径
	 * 
	 * 取得文件绝对路径文件对象
	 * 
	 * @param なし
	 * @return File 文件对象
	 * @exception なし
	 * @since 01-00
	 */
	public File getAbsoluteFile() {
		return file.getAbsoluteFile();
	}

	/**
	 * 取得文件绝对路径文件
	 * 
	 * 取得文件绝对路径文件字符�??
	 * 
	 * @param なし
	 * @return String 文件字符�??
	 * @exception なし
	 * @since 01-00
	 */
	public String getAbsolutePath() {
		return file.getAbsolutePath();
	}

	/**
	 * 取得文件相对路径文件
	 * 
	 * 取得文件相对路径文件字符�??
	 * 
	 * @param なし
	 * @return String 文件字符�??
	 * @exception なし
	 * @since 01-00
	 */
	public String getPath() {
		return file.getPath();
	}

	/**
	 * 复制文件
	 * 
	 * 从源地址将文件复制到目标地址
	 * 
	 * @param inputPath
	 *            源文件地�??
	 * @param outputPath
	 *            目标文件地址
	 * @return なし
	 * @exception なし
	 * @since 01-00
	 */

	/**
	 * 文件生成
	 * 
	 * 将byte流生成目标文�??
	 * 
	 * @param なし
	 * @return String 文件字符�??
	 * @exception なし
	 * @since 01-00
	 */
	public File saveByte2File(byte[] b, File outputFile) throws Exception {
		try {
			if (!outputFile.exists()) {
				outputFile.createNewFile();
			}
			FileOutputStream fos = new FileOutputStream(outputFile);
			fos.write(b);
			fos.close();

		} catch (Exception e) {
			e.printStackTrace();
			throw (e);
		}
		return outputFile;
	}

	/**
	 * 取得文件对象
	 * 
	 * @param なし
	 * @return File 文件对象
	 * @exception なし
	 * @since 01-00
	 */
	public File getFile() {
		return file;
	}

	/**
	 * 设置文件对象
	 * 
	 * 设置文件对象属�??
	 * 
	 * @param file
	 *            文件对象
	 * @return なし
	 * @exception なし
	 * @since 01-00
	 */
	public void setFile(File file) {
		this.file = file;
	}

}